package com.springbootinitiazation.listener;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;


public class HelloSpringApplicationRunListener implements SpringApplicationRunListener {

    //要加上一个构造器，不然启动时会报错
    public HelloSpringApplicationRunListener(SpringApplication application,String[] args){
    }

    @Override//监听容器的开始（应该是容器创建的开始）
    public void starting() {
        System.out.println("SpringApplicationRunListener....");
    }

    @Override//准备好的环境信息(应该是环境准备好就会调用这个方法)
    public void environmentPrepared(ConfigurableEnvironment environment) {
        Object o = environment.getSystemProperties().get("os.name");
        System.out.println("environment......"+o);
    }

    @Override//IOC容器准备好就会调用这个方法（应该是这样）
    public void contextPrepared(ConfigurableApplicationContext context) {
        System.out.println("context.......");
    }

    @Override//应该是容器加载完成会调用这个方法（应该是把组件全部放进容器中时）
    public void contextLoaded(ConfigurableApplicationContext context) {
        System.out.println("contextLoaded......");
    }

    @Override
    public void started(ConfigurableApplicationContext context) {

    }

    @Override
    public void running(ConfigurableApplicationContext context) {

    }

    @Override//应该是运行失败或者是抛出异常时会调用这个方法
    public void failed(ConfigurableApplicationContext context, Throwable exception) {
        System.out.println("failed....");
    }
}
